/*
 * Copyright (c) 2013, Ford Motor Company All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *  · Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 *  · Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *  · Neither the name of the Ford Motor Company nor the names of its
 * contributors may be used to endorse or promote products derived from this
 * software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
/**
 * @name SDL.SDLAbstractView
 * @desc SDL application abstract shared view
 * @category View
 * @filesource app/view/sdl/shared/AbstractView.js
 * @version 1.0
 */

SDL.SDLAbstractView = Em.ContainerView.extend( {

    classNames:
        [
            'sdl-window'
        ],

    classNameBindings:
        [
            'active:active_state:inactive_state'
        ],

    active: false,

    caption: 'Caption Text',

    /**
     * Activate window and set caption text
     * 
     * @param text: String
     */
    activate: function( text ) {
        if( text ){
            this.set( 'caption', text );
        }
        this.set( 'active', true );
    },

    /**
     * Deactivate window
     */
    deactivate: function() {
        this.set( 'active', false );
    },

    onStateChange: function() {
        if( this.active ){
            this.deactivate();
        }
    }.observes( 'SDL.TransitionIterator.ready' ),

    backButton: SDL.Button.extend( {
        classNames:
            [
                'back-button'
            ],
        target: 'this.parentView',
        action: 'deactivate',
        icon: 'images/media/ico_back.png',
        onDown: false
    } ),

    captionText: SDL.Label.extend( {
        classNames:
            [
                'caption-text'
            ],

        contentBinding: 'this.parentView.caption'
    } )
} );